"""
    @Author  ：思念 
    @File    ：8.多线程结合队列实现爬虫.py
    @Date    ：2025/1/22 9:51 
"""

import requests
import threading
from queue import Queue

def get_image(q):
    """
    从队列中获取图片URL并下载图片。

    参数:
    q: 队列，包含图片URL。

    返回值:
    无返回值。
    """
    # 遍历队列中的所有图片URL
    for _ in range(q.qsize()):
        # 从队列中获取一个图片URL
        url = q.get()
        # 发送HTTP请求获取图片内容
        response = requests.get(url).content
        # 提取URL中的文件名
        filename = url.split('/')[-1]
        # 打开文件以二进制写入模式
        with open(filename, 'wb') as f:
            # 写入图片内容到文件
            f.write(response)
            # 打印下载完成的消息
            print(f'{url} 下载完成')


# 当作为主模块执行时
if __name__ == '__main__':
    # 定义图片URL列表
    url_list = [
        'http://pic.bizhi360.com/bbpic/98/10798.jpg',
        'http://pic.bizhi360.com/bbpic/92/10792.jpg',
        'http://pic.bizhi360.com/bbpic/86/10386.jpg'
    ]
    # 创建一个队列对象
    queue = Queue()
    # 将所有图片URL添加到队列中
    for image_url in url_list:
        queue.put(image_url)
    # 创建一个线程执行get_image函数
    t = threading.Thread(target=get_image, args=(queue,))
    # 启动线程
    t.start()
